<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            width: 300px;
            height: 300px;
            background: chartreuse;
        }
        
        p {
            width: 100px;
            height: 100px;
            background: pink;
        }
    </style>
</head>

<body>
    <div>
        div
        <p>p</p>
    </div>
    <script>
        // 1.获取dom
        var oDiv = $("div")[0];
        var oP = $("p")[0];
        //绑定事件
        /*       addEventListener第三个参数为false时为冒泡获取(由里向外),
              true(由外到里) */
        oDiv.addEventListener('click', function() {
            console.log("div的事件执行了");
        }, false);
        oP.addEventListener('click', function() {
            console.log("p的事件执行了");
        }, false)
        document.body.addEventListener('click', function() {
                console.log("body的事件执行了");
            }, false)
            // addEventListener 参数

        /*       参数：
              1.事件类型
              2.事件绑定函数
              3.maop阶段执行false(默认) 还是捕获阶段执行 true
               */

        //  p -> div -> body 事件执行顺序叫做冒泡
        function addEventListener(element, eventName, fn) {
            if (element.addEventListener) {
                element.addEventListener(eventName, fn);
            } else if (element.attachEvent) {
                element.attachEvent("on" + eventName, fn);
            } else {
                // 相当于element.onclick = fn;
                element['on' + eventName] = f(n);
            }
        }

        function $(select) {
            return document.querySelectorAll(select);
        }
    </script>
</body>

</html>